// 日志消息类
// 封装⼀条完整的⽇志消息所需的内容
// 内容有：
// 1. 日志产生的时间
// 2. 日志等级
// 3. 行号
// 4. 线程ID
// 5. 源码文件名
// 6. 日志器名称
// 7. 具体的⽇志信息
#ifndef __M_MSG_H__
#define __M_MSG_H__

#include <iostream>
#include <string>
#include <thread>
#include "level.hpp"
#include "util.hpp"

namespace gjclog
{
    struct LogMsg
    {
        time_t _ctime;          // 日志产生的时间
        LogLevel::value _level; // 日志等级
        size_t _line;           // 行号
        std::thread::id _tid;   // 线程ID
        std::string _file;      // 源码文件名
        std::string _logger;    // 日志器名
        std::string _payload;   // 有效载荷

        LogMsg(LogLevel::value level, size_t line, const std::string file, const std::string logger, const std::string msg)
            : _ctime(util::Date::now()), _level(level), _line(line), _tid(std::this_thread::get_id()), _file(file), _logger(logger), _payload(msg)
        {}
    };

}

#endif